SQL语句多表联合查询

本周之前,对于数据库的使用仅限于简单的增删改查(insert、delete、updata、select),而这一周由于工作需要,对一些sql函数、sql语句多表联合查询、T-SQL语句基本语法、存储过程编写等有了简单的学习,现将一周所学进行总结、归纳。

本文主要总结sql语句中的  常用sql函数和多表联合查询知识。直接通过实例进行讲解。

本文学习过程中主要参考了:http://www.w3school.com.cn/sql/sql_where.asp

设计到的表有:

表1: Orders
O_Id 	OrderDate 	OrderPrice 	CustomerName
1 	2008/12/29 	   1000 	    Bush
2 	2008/11/23 	   1600 	    Carter
3 	2008/10/05 	   700 		    Bush
4 	2008/09/28 	   1000 	    Bush
5 	2008/08/06 	   2000             Adams
6 	2008/07/21 	   100 		    Carter
表2:Customer
CustomerID	CustomerName
1		    Bush
2		    Carter
3		    Adams

1、利用distinct去除重复

基本语法

SELECT DISTINCT 列名称 FROM 表名称

SELECT distinct CustomerName FROM Orders --distinct 去除重复

结果:

CustomerName
Adams
Bush
Carter 

2、GROUP BY 提取组合 并去重

SELECT CustomerName, OrderPrice
FROM Orders
GROUP BY CustomerName, OrderPrice
结果:

CustomerName	OrderPrice
Adams	          2000
Bush	          700
Bush	          1000
Carter            100
Carter	          1600

3、GROUP BY  + COUNT  提取组合 计算重复

SELECT CustomerName, OrderPrice, count(*) as 重复数
FROM Orders
GROUP BY CustomerName, OrderPrice

结果:

CustomerName	OrderPrice	重复数
Adams	            2000	1
Bush	             700        1
Bush	            1000	2
Carter	             100	1
Carter	            1600	1



4、COUNT(1)  和 GROUP BY

SELECT CustomerName, COUNT(1) AS 重复数
FROM Orders
GROUP BY CustomerName  --记录Customer 每种值的记录数

结果:

CustomerName	重复数
Adams	        1
Bush	        3
Carter	        2


5、sum 和 GROUP BY

SELECT CustomerName, sum(OrderPrice) AS sumOrderPrice
FROM Orders
GROUP BY CustomerName --记录Customer 每种值的对应的OrderPrice的累加和

结果:

CustomerName	sumOrderPrice
Adams		2000
Bush		2700
Carter		1700

6、AVG 和  GROUP BY 的多表联合查询 不加where

SELECT B.CustomerID, A.CustomerName, AVG(OrderPrice)  AS 平均值
FROM Orders AS A,Customer AS B
GROUP BY B.CustomerID, A.CustomerName 
结果: 可以看出 Groupby 将 B.CustomerID (1,2,3)  和 A.CustomerName(Adams、Bush、Carter ) 进行的全部任意组合, 但平均值依然按Orders表来求的

CustomerID	CustomerName	平均值
1	Adams	2000
1	Bush	900
1	Carter	850
2	Adams	2000
2	Bush	900
2	Carter	850
3	Adams	2000
3	Bush	900
3	Carter	850


7、AVG 和  GROUP BY 的多表联合查询 加上where

SELECT B.CustomerID, A.CustomerName, AVG(OrderPrice)  AS 平均值
FROM Orders AS A,Customer AS B
WHERE A.CustomerName = B.CustomerName
GROUP BY B.CustomerID, A.CustomerNme 

结果:

CustomerID	CustomerName	平均值
1	Bush	900
2	Carter	850
3	Adams	2000














  • 6
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值